准备工作
ida打开,有反调试,nop掉,或者将时间改成很长

安全保护措施,可以写got表

寻找漏洞,free会将判断变量置0,不存在double free

那么同样也不存在uaf漏洞

edit的时候,size没有限制,可堆溢出

这种没有输出什么的程序,代码可以写得相当潇洒
unlink
乍一看,没有输出函数啊,怎么泄露呢
后来想了想,没有输出函数,创造条件也要构造啊
可以改写strlen为puts,printf什么的

那么就可以将2的指针改了

跟着我们就可以通过操作2来覆盖1,利用1去写,再去读什么的
这里我写strlen的got表为plt_printf,这样就相当于构造了格式化字符串漏洞,不过有任意地址读写,就不用这个了,不过我看到有人用这个进行泄露的

之后通过下面的leak函数泄露即可

使用pwntools的DynELF泄露system地址

最后将atoi的got表改了

最终结果

完整exp
| 1 | # -*- coding: utf-8 -*- | 
另外的overwrite目标
有人将free改成puts,printf,其实也是可以的,
最后写system的时候也可以将free改回system
 
         
        